package service.impl;


import bean.dto.PermissionQueryPage;
import bean.pojo.Permissions;
import bean.vo.PermissionsOption;
import bean.vo.RouterVo;
import dao.PermissionDao;
import dao.impl.PermissionDaoImpl;
import service.PermissionService;

import java.util.Collections;
import java.util.List;

/**
 * service.impl
 * User: mcw
 * Date: 2024/12/16 上午10:10
 * motto:   春天（spring）没有虫子（bug)
 * Description:
 * Version: V1.0
 */
public class PermissionServiceImpl implements PermissionService {
    private PermissionDao permissionDao=new PermissionDaoImpl();
    /**
     * 根据角色id查询角色权限信息
     * @param roleId
     * @return
     */
    @Override
    public List<RouterVo> findByRoleId(Integer roleId) {
        //根据角色id查询该角色的所有一级菜单
        List<RouterVo>  root=permissionDao.findRootByRoleId(roleId);
        //根据角色id和父菜单id查询该角色的所有子菜单
        for (RouterVo routerVo : root) {
            List<RouterVo>  children=permissionDao.findChildrenByRoleId(roleId,routerVo.getId());
            routerVo.setChildren(children);
        }
        return root;
    }

    /**
     * 查询所有记录数
     * @param queryPage
     * @return
     */
    @Override
    public Long findByTotal(PermissionQueryPage queryPage) {
        return permissionDao.findByTotal(queryPage);
    }

    /**
     * 分页查询
     * @param queryPage
     * @return
     */
    @Override
    public List<Permissions> findByPage(PermissionQueryPage queryPage) {
        return permissionDao.findByPage(queryPage);
    }

    /**
     * 查询所有父菜单信息
     * @return
     */
    @Override
    public List<PermissionsOption> findAllList() {
        return permissionDao.findAllList();
    }

    /**
     * 添加权限信息
     * @param permissions
     * @return
     */
    @Override
    public boolean insert(Permissions permissions) {
        return permissionDao.insert(permissions);
    }

    /**
     * 根据id删除权限
     * @param permissionId
     * @return
     */
    @Override
    public boolean deleteById(Integer permissionId) {
        return permissionDao.deleteById(permissionId);
    }

    /**
     * 修改权限信息
     * @param permissions
     * @return
     */
    @Override
    public boolean update(Permissions permissions) {
        return permissionDao.update(permissions);
    }

    /**
     * 查询所有菜单信息
     * @return
     */
    @Override
    public List<PermissionsOption> findAllPermissionList() {
        return permissionDao.findAllPermissionList();
    }
    /**
     * 查询该角色菜单信息
     * @param roleId
     * @return
     */
    @Override
    public List<Integer> findCheckedPermissionList(Integer roleId) {
        return permissionDao.findCheckedPermissionList(roleId);
    }
}
